#include <iostream>
using namespace std;
#include <string>
#include "my_hash.h"
#ifndef __HEXADECIMAL__
#define __HEXADECIMAL__
// 字符型8进制整型转10进制数
// @param string number
// @return long value
long INT8_TO_INT10(string number){
	int length = number.length();
	long value = 0;
	for(int i=1;i<length;i++){
		value = value * 8 + number[i]-'0';	
	}
	return value;
}
// 字符型16进制整型转10进制数
// @param string number
// @return long value
long INT16_TO_INT10(string number){
	int length = number.length();
	long value = 0;
	for(int i=2;i<length;i++){
		if(number[i] <= '9')
			value = value * 16 + number[i]-'0';	
		else
			value = value * 16 + number[i]-'a'+10;
	}
	return value;
}
// 字符型8进制浮点型转10进制浮点数
// point_location 存储小数点位置  默认在字符串末位
// 整数部分左移 
// 小数部分右移
// @param string number
// @return long value
float FLOAT8_TO_FLOAT10(string number){
	int length = number.length();
	float value = 0;
	float int_value = 0;
	float float_value = 0;
	int point_location = length;
	for(int i=1;i<length;i++){
		if(number[i] == '.'){
			point_location = i;
			break;
		}
		int_value = int_value * 8 + number[i]-'0';		
	}
	//cout<<int_value<<endl;
	for(int i=length-1;i > point_location;i--){
		cout<<number[i]<<endl;
		float_value = float_value/8 + (number[i]-'0');	
	}
	float_value = float_value / 8;
	//cout<<float_value<<endl;
	value = int_value + float_value;
	return value;
}
// 字符型16进制浮点型转10进制浮点数
// point_location 存储小数点位置  默认在字符串末位
// 整数部分左移 
// 小数部分右移
// @param string number
// @return long value
float FLOAT16_TO_FLOAT10(string number){
	int length = number.length();
	float value = 0;
	float int_value = 0;
	float float_value = 0;
	int point_location = length;
	for(int i=2;i<length;i++){
		if(number[i] == '.'){
			point_location = i;
			break;
		}
		if(number[i] <= '9')
			int_value = int_value * 16 + number[i]-'0';	
		else
			int_value = int_value * 16 + number[i]-'a'+10;	
	}
	//cout<<int_value<<endl;
	for(int i=length-1;i > point_location;i--){
		if(number[i] <= '9')
			float_value = float_value / 16 + (number[i]-'0');	
		else
			float_value = float_value / 16 + (number[i]-'a'+10);
	}
	float_value = float_value / 16;
	//cout<<float_value<<endl;
	value = int_value + float_value;
	return value;
}

#endif
